/*
 * File:   Benchmark.h
 * Author: jcrada
 *
 * Created on 31 May 2011, 9:51 AM
 */

#ifndef ECB_BENCHMARK_H
#define	ECB_BENCHMARK_H

#include <string>
#include <vector>

namespace ecb {
    class Problem;

    class Benchmark {
    protected:
        std::string _name;
        std::vector<Problem*> _problems;

    public:
        Benchmark(const std::string& name = "");
        virtual ~Benchmark();

        std::string name() const;

        virtual void addProblem(Problem* problem);
        virtual void insertProblem(Problem* problem, int index);
        virtual Problem* getProblem(int index) const;
        virtual Problem* removeProblem(int index);
        virtual int numberOfProblems() const;
        virtual const std::vector<Problem*>& problems() const;


    };
}


#endif	/* ECB_BENCHMARK_H */

